#ifndef PURCHASEORDERDIALOG_H
#define PURCHASEORDERDIALOG_H

#include <QDialog>
#include <QMap>
#include "mysqldata.h"

namespace Ui {
class PurchaseOrderDialog;
}

class PurchaseOrderDialog : public QDialog
{
    Q_OBJECT

public:
    explicit PurchaseOrderDialog(QWidget *parent = nullptr);

     // 设置订单ID用于查看模式
    void setOrderId(int poId);

    ~PurchaseOrderDialog();
signals:
    //自定义信号,通知主窗口对话框已经关闭
    void poDialogClosed();
private:
    Ui::PurchaseOrderDialog *ui;
    // -1表示新建模式
    int currentOrderId = -1;
    // 加载订单详情
    void loadOrderDetails(int poId);

    //重写关闭事件
    void closeEvent(QCloseEvent *event);
    //初始化数据
    void initData();

    //清空产品列表
    void clearProductTable();
    //计算总金额
    void calculateTotals();
    //更新预期到货日期
    void updateExpectedArrival();
    // 数据缓存
    QMap<int, Supplier> supplierMap;         // supplier_id -> Supplier
    QMap<int, ProcurementPlan> planMap;      // pplan_id -> ProcurementPlan
    QMap<int, QList<SupplierProduct>> supplierProducts; // supplier_id -> Products
private slots:
    //dialogbuttonbox确认按钮点击
    void on_buttonBox_accepted();
    //dialogbuttonbox关闭按钮点击
    void on_buttonBox_rejected();

    //供应商改变
    void onSupplierChanged(int index);
    //采购计划改变
    void onPlanChanged(int index);
    //产品数量发生改变
    void onQuantityChanged();
    //添加产品
    void onAddProductClicked();
    //删除产品行
    void deleteProductRow(int row);
};

#endif // PURCHASEORDERDIALOG_H
